/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniminuto.park.controlador;

import co.uniminuto.park.clases.Estacionamiento;
import co.uniminuto.park.clases.Geolocalizacion;
import co.uniminuto.park.dao.consultarrEstacionamientoDao;
import co.uniminuto.park.dao.insertarEstacionamientoDao;
import java.io.Serializable;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpSession;
import org.primefaces.context.RequestContext;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;

/**
 *
 * @author Esteban Rozo
 */
@ManagedBean
@ViewScoped
public class ConsultarSitios implements Serializable {
    
    private MapModel mapa;
    private Marker marker;
    private Estacionamiento sitio;
    private Geolocalizacion coordenadas;
    private Estacionamiento esta;
    FacesContext context = javax.faces.context.FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
EstacionamientosLista nB =(EstacionamientosLista) session.getAttribute("elementoLista");
    
    private EstacionamientosLista getElementoApplication() {
        FacesContext cont = FacesContext.getCurrentInstance();
        return cont.getApplication().evaluateExpressionGet(cont, "#{elementoApplication}", EstacionamientosLista.class);
    }

    public Estacionamiento getEsta() {
        return esta;
    }

    public void setEsta(Estacionamiento esta) {
        this.esta = esta;
    }
    
    

    public Geolocalizacion getCoordenadas() {
        return coordenadas;
    }

    public void setCoordenadas(Geolocalizacion coordenadas) {
        this.coordenadas = coordenadas;
    }
    
    
    public MapModel getMapa() {
        return mapa;
    }
    
    public Marker getMarker() {
        return marker;
    }
    
    public Estacionamiento getSitio() {
        return sitio;
    }
    
    public ConsultarSitios() {
        mapa = new DefaultMapModel();
        sitio = new Estacionamiento();
        mapa = recuperarMarker();
        context.getExternalContext().getSessionMap().remove("consultarSitios");
        coordenadas= new Geolocalizacion();
        esta= new Estacionamiento();
                
        
    }
    
    public MapModel recuperarMarker() {
        consultarrEstacionamientoDao c = new consultarrEstacionamientoDao();
        List<Estacionamiento> list;
        //EstacionamientosLista lis = new EstacionamientosLista();
        list = getElementoApplication().getElementoLista();
        MapModel mapaMarket = new DefaultMapModel();
        for (Estacionamiento sit : list) {
            Object t[] = new Object[2];
                t[0]=sit.getDireccion();
                 t[1]=sit.getCapacidad();
      
            Marker temporal = new Marker(new LatLng(sit.getUbicacion().getLatitud(), sit.getUbicacion().getLongitud()), sit.getNombre(), t);
         
        
       // no=t.getClass().getName(Estacionamiento.class);
            if(sit.getTipo().equals("P")){
            temporal.setIcon("/Park-uniminuto/faces/resources/ima/parking.png");}
            else{ temporal.setIcon("/Park-uniminuto/faces/resources/ima/bahia2.png");}
            mapaMarket.addOverlay(temporal);            
        }
        
        return mapaMarket;
    }

    public void onMarkerSelect(OverlaySelectEvent event) {        
        marker = (Marker) event.getOverlay();  
        coordenadas.setLatitud(marker.getLatlng().getLat());
           coordenadas.setLongitud(marker.getLatlng().getLng());
           consultarrEstacionamientoDao consultaEsta= new consultarrEstacionamientoDao();
        //consultaEsta.getParqueaderosGeo(coordenadas);
             List<Estacionamiento> Lista = new ArrayList<Estacionamiento>();
        Lista=consultaEsta.getParqueaderosGeo(coordenadas);
        Estacionamiento estTemporal= Lista.get(0);
        esta=estTemporal;
    }    
    
    
    public void showMessage() {  
        consultarrEstacionamientoDao consultaEsta= new consultarrEstacionamientoDao();
        //consultaEsta.getParqueaderosGeo(coordenadas);
             List<Estacionamiento> Lista = new ArrayList<Estacionamiento>();
        Lista=consultaEsta.getParqueaderosGeo(coordenadas);
        Estacionamiento estTemporal= Lista.get(0);
        esta=estTemporal;
        //FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, estTemporal.getNombre(),"Direccion:"+ estTemporal.getDireccion()+",Tel:"+estTemporal.getTelefono());  
          
        RequestContext.getCurrentInstance().openDialog("infoSitio"); 
        
       
    }  
  
}
